Skip to main content

搭建 python 环境

· 5 min read
赵炜

背景

帮助文档的 pdfword 导出,基于 python 生成,所以需要在服务器上搭建相应的环境。

pandoc

Pandoc 是一个用于文本转换的开源工具,可以将一个文档从一种格式转换为另一种格式。它支持的输入格式包括 MarkdownHTMLLaTeXdocx 等,输出格式包括 HTMLLaTeXdocxPDF 等。 下载地址:https://github.com/jgm/pandoc/releases 这里下载的是 pandoc-3.1.4-linux-amd64.tar.gz

mkdir -p /opt/pandoc
cd /opt/pandoc
# 上传压缩包
tar -xvf pandoc-3.1.4-linux-amd64.tar.gz
ln -sf /opt/pandoc/pandoc-3.1.4/bin/pandoc /usr/bin/pandoc
pandoc -v

Ruby

Ruby 是一种动态、面向对象的编程语言。asciidoctor 依赖它。

离线安装(推荐)

安装包下载地址(下载 2.7 以上版本):https://www.ruby-lang.org/en/downloads/releases/

mkdir -p /opt/ruby
cd /opt/ruby/
// 上传安装包
tar -zvxf ruby-2.7.7.tar.gz
cd ruby-2.7.7

// 进行编译安装
./configure --prefix=/usr/local/ruby
make && make install

// 建立软链,覆盖系统默认的 2.0 ruby 版本
ln -sf /usr/local/ruby/bin/ruby /usr/bin/ruby

在线安装

先确认是否安装了 rvmrvm 是用来管理 ruby 版本的工具。

rvm

# 下载 gpg 公钥

gpg2 --keyserver hkp://keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

curl -L get.rvm.io | bash -s stable
ln -sf /usr/local/rvm/bin/rvm /usr/bin/rvm
rvm -v

安装/升级 ruby

rvm install ruby // 安装最新版本

rvm install 2.7.2 // 安装指定版本的

升级报错

[root@172-16-82-102 ~]# rvm install 2.7.1
Already installed ruby-2.7.1.
To reinstall use:

    rvm reinstall ruby-2.7.1

-bash: cat: 未找到命令

安装导致环境变量被覆盖,导致 /usr/bin/环境变量缺失。 加入 /usr/bin/ 的信息恢复正常。

export PATH=$PATH:/usr/bin/

asciidoctor

Asciidoctor 是一个用于文本转换的开源工具,可以将一个文档从 Asciidoc 格式转换为 HTMLPDFePub 和其他格式。AsciidoctorRuby 编写的

gem install asciidoctor

asciidoctor-pdf

Asciidoctor PDFAsciidoctor 的一个插件,可以将 Asciidoc 文档转换为 PDF 格式。

ruby version ≥ 2.7
gem install asciidoctor-pdf

安装后找不到

报错如下:

[root@172-16-82-102 ~]# asciidoctor-pdf -v
-bash: asciidoctor-pdf: 未找到命令

可采用 gem which 查看安装地址,建立软链


[root@172-16-82-102 ~]# gem which asciidoctor-pdf
/usr/local/ruby/lib/ruby/gems/2.7.0/gems/asciidoctor-pdf-2.3.8/lib/asciidoctor-pdf.rb

[root@172-16-82-102 ~]# ln -sf /usr/local/ruby/lib/ruby/gems/2.7.0/gems/asciidoctor-pdf-2.3.8/bin/asciidoctor-pdf /usr/bin/asciidoctor-pdf

python3

python2python3 存在语法差异,使用 python2 执行会报以下错误,且 python2 官方不在维护,

File "./convert2adoc/convert2adoc.py", line 40
SyntaxError: Non-ASCII character '\xef' in file ./convert2adoc/convert2adoc.py on line 40, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

离线安装 python3

// 下载 python3
mkdir -p /opt/python3
cd /opt/python3/
wget https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tar.xz
tar -xvf Python-3.9.5.tar.xz
cd Python-3.9.5/

// 安装
./configure --prefix=/usr/local/python3
make && make install

// 增加 python3 的软连接
ln -sf /usr/local/python3/bin/python3.9 /usr/bin/python3
ln -sf /usr/local/python3/bin/python3.9-config /usr/bin/python-config

pip

// 增加 pip 的软连接
ln -sf /usr/local/python3/bin/pip3 /usr/bin/pip3
ln -sf /usr/local/python3/bin/pip3 /usr/bin/pip

切换国内源

mkdir -p ~/.pip
vim ~/.pip/pip.conf

写入内容:

[global]
index-url = http://mirrors.aliyun.com/pypi/simple/

[install]
trusted-host = mirrors.aliyun.com

安装报错

提示以“root”用户身份运行 pip 可能会导致权限损坏和冲突,

WARNING: Running pip as the ‘root‘ user can result in broken permissions and conflicting

解决方案是建立一个虚拟环境:

[root@172-16-82-102 jm]# pip -V
pip 23.1.2 from /usr/local/python3/lib/python3.9/site-packages/pip (python 3.9)
[root@172-16-82-102 jm]# cd /usr/local/python3/lib/python3.9/site-packages/pip # 进入安装地址
[root@172-16-82-102 pip]# python -m venv tutorial-env
[root@172-16-82-102 pip]# source tutorial-env/bin/activate
(tutorial-env) [root@172-16-82-102 pip]#

安装参考:

(tutorial-env) [root@172-16-82-102 pip]# pip install pyyaml
Looking in indexes: http://mirrors.aliyun.com/pypi/simple/
Requirement already satisfied: pyyaml in ./tutorial-env/lib/python3.9/site-packages (6.0)
(tutorial-env) [root@172-16-82-102 pip]# pip install esprima
Looking in indexes: http://mirrors.aliyun.com/pypi/simple/
Collecting esprima
Using cached esprima-4.0.1-py3-none-any.whl
Installing collected packages: esprima

二次进入虚拟环境 先进入 pip 安装路径,再进入

[root@172-16-82-102 ~]# cd /usr/local/python3/lib/python3.9/site-packages/pip
[root@172-16-82-102 pip]# source tutorial-env/bin/activate

安装 yaml

需先进入虚拟环境

pip install yaml

安装 esprima

需先进入虚拟环境

pip install esprima